home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / vidhrdw / battlnts.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  2KB  |  91 lines

  1. #include "driver.h"
  2. #include "vidhrdw/generic.h"
  3. #include "vidhrdw/konamiic.h"
  4.  
  5. static int spritebank;
  6.  
  7. static int layer_colorbase[2];
  8.  
  9. /***************************************************************************
  10.  
  11.   Callback for the K007342
  12.  
  13. ***************************************************************************/
  14.  
  15. static void tile_callback(int layer, int bank, int *code, int *color)
  16. {
  17.     *code |= ((*color & 0x0f) << 9) | ((*color & 0x40) << 2);
  18.     *color = layer_colorbase[layer];
  19. }
  20.  
  21. /***************************************************************************
  22.  
  23.   Callback for the K007420
  24.  
  25. ***************************************************************************/
  26.  
  27. static void sprite_callback(int *code,int *color)
  28. {
  29.     *code |= ((*color & 0xc0) << 2) | spritebank;
  30.     *code = (*code << 2) | ((*color & 0x30) >> 4);
  31.     *color = 0;
  32. }
  33.  
  34. WRITE_HANDLER( battlnts_spritebank_w )
  35. {
  36.     spritebank = 1024 * (data & 1);
  37. }
  38.  
  39. /***************************************************************************
  40.  
  41.     Start the video hardware emulation.
  42.  
  43. ***************************************************************************/
  44.  
  45. int battlnts_vh_start(void)
  46. {
  47.     layer_colorbase[0] = 0;
  48.     layer_colorbase[1] = 0;
  49.  
  50.     if (K007342_vh_start(0,tile_callback))
  51.     {
  52.         /* Battlantis use this as Work RAM */
  53.         K007342_tilemap_set_enable(1, 0);
  54.         return 1;
  55.     }
  56.  
  57.     if (K007420_vh_start(1,sprite_callback))
  58.     {
  59.         K007420_vh_stop();
  60.         return 1;
  61.     }
  62.  
  63.     return 0;
  64. }
  65.  
  66. void battlnts_vh_stop(void)
  67. {
  68.     K007342_vh_stop();
  69.     K007420_vh_stop();
  70. }
  71.  
  72. /***************************************************************************
  73.  
  74.   Screen Refresh
  75.  
  76. ***************************************************************************/
  77.  
  78. void battlnts_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh){
  79.  
  80.     K007342_tilemap_update();
  81.  
  82.     if (palette_recalc())
  83.         tilemap_mark_all_pixels_dirty(ALL_TILEMAPS);
  84.  
  85.     tilemap_render( ALL_TILEMAPS );
  86.  
  87.     K007342_tilemap_draw( bitmap, 0, TILEMAP_IGNORE_TRANSPARENCY );
  88.     K007420_sprites_draw( bitmap );
  89.     K007342_tilemap_draw( bitmap, 0, 1 | TILEMAP_IGNORE_TRANSPARENCY );
  90. }
  91.